package collection;

import java.util.HashSet;
import java.util.Iterator;

/**
 *  Set接口
 */
public class SetMethod {

    public static void main(String[] args) {

        /*
            和List接口一样，Set接口也是Collection的子接口，因此，常用方法和Collection接口一样
            可以使用迭代器 增强for
            不能使用索引的方式来获取
         */

        /*
            以Set接口的实现类 HashSet 来演示 Set 接口方法
            1)Set接口的实现类的对象(Set接口对象)，不能存放重复元素，可以添加一个null
            2)set接口对象存放数据是无序的(添加顺序和取出顺序不一致),但是是固定的
         */

        HashSet set = new HashSet();
        set.add("john");
        set.add("lucy");
        set.add("john");//重复
        set.add("jack");
        set.add("hsp");
        set.add("mary");
        set.add(null);//
        set.add(null);//再次添加 null

        //循环输出set，每次元素的顺序都是一致的
        for (int i = 0; i < 10; i++) {
            System.out.println("set: " + set);
        }

        //使用迭代器
        System.out.println("=====使用迭代器====");
        Iterator iterator = set.iterator();
        while (iterator.hasNext()) {
            Object obj = iterator.next();
            System.out.println("obj=" + obj);
        }
        set.remove(null);

        //方式2: 增强for
        System.out.println("=====增强 for====");
        for (Object o : set) {
            System.out.println("o=" + o);
        }
    }
}
